// 输入一棵二叉树的根节点，求该树的深度。从根节点到叶节点依次经过的节点（含根、叶节点）形成树的一条路径，最长路径的长度为树的深度。

#include<bits/stdc++.h>
using namespace std;

// dfs

// 执行用时：
// 8 ms
// , 在所有 C++ 提交中击败了
// 77.51%
// 的用户
// 内存消耗：
// 18.2 MB
// , 在所有 C++ 提交中击败了
// 99.39%
// 的用户

  struct TreeNode {
      int val;
      TreeNode *left;
     TreeNode *right;
      TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 };
 
class Solution {
public:
    int res = INT_MIN;
    int maxDepth(TreeNode* root) {
        int d =0;
        if(root==nullptr){
            return 0;
        }
        dfs(root,d);
        return res;
    }
    void dfs(TreeNode* root,int& d){
        if(root==nullptr){
            ++d;
            return;
        }
        ++d;
        res = max(res,d);
        dfs(root->left,d);
        --d;
        dfs(root->right,d);
        --d;
    }
};